home *** CD-ROM | disk | FTP | other *** search
/ Computer Music Interactif…cial Edition 1999 Winter / cd 3.iso / mac / Mac / Shares / Midishare™1.68 / Development Tools / Libraries / Player / Code Warrior / PLAYER.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-19  |  6.2 KB  |  214 lines  |  [TEXT/CWIE]

  1. /*------------------------------------------------------------------*/
  2. /*  Player: a library to develop  multi-tracks synchronisable
  3. /*                MidiShare sequencers
  4. /*
  5. /*  c GRAME 1996
  6. /*  version 1.00
  7. /*------------------------------------------------------------------*/
  8.  
  9. #include <MidiShare.h>
  10.  
  11. /*--------------------------------------------------------------------------*/
  12. /* Player state  */
  13. /*--------------------------------------------------------------------------*/
  14.  
  15. enum playerstatus {kIdle = 0, kPause, kRecording, kPlaying, kWaiting };
  16.  
  17. /*--------------------------------------------------------------------------*/
  18. /* Tracks state  */
  19. /*--------------------------------------------------------------------------*/
  20.  
  21. #define kMaxTrack        256
  22. #define kMuteOn          1
  23. #define kMuteOff          0
  24. #define kSoloOn          1
  25. #define kSoloOff          0
  26. enum trackparameter     { kMute = 0,  kSolo };
  27.  
  28. /*------------------------------------------------------------------*/
  29. /* Recording management */
  30. /*--------------------------------------------------------------------------*/
  31.  
  32. #define kNoTrack        -1
  33. #define kEraseMode      1
  34. #define kMixMode         0
  35.  
  36. /*--------------------------------------------------------------------------*/
  37. /* Loop  management */
  38. /*--------------------------------------------------------------------------*/
  39.  
  40. enum loop {kLoopOn = 0, kLoopOff};
  41.  
  42. /*--------------------------------------------------------------------------*/
  43. /* Step Playing */
  44. /*--------------------------------------------------------------------------*/
  45.  
  46. #define kStepPlay          1
  47. #define kStepMute          0
  48.  
  49. /*--------------------------------------------------------------------------*/
  50. /* Synchronisation */
  51. /*--------------------------------------------------------------------------*/
  52.  
  53. enum rcvsynchro    { kInternalSync = 0 , kClockSync,  kSMPTESync  };
  54. enum sendsynchro    { kNoSyncOut = 0,  kClockSyncOut };
  55.  
  56. /*--------------------------------------------------------------------------*/
  57. /* MIDIfile */
  58. /*--------------------------------------------------------------------------*/
  59.  
  60. enum midifiletypes    { midifile0 = 0, midifile1, midifile2};
  61.  
  62. #define TicksPerQuarterNote    0
  63. #define Smpte24                    24
  64. #define Smpte25                    25
  65. #define Smpte29                    29
  66. #define Smpte30                    30
  67.  
  68.  
  69. /*--------------------------------------------------------------------------*/
  70. /* Errors */
  71.  /*--------------------------------------------------------------------------*/
  72.  // for the player
  73.  /*--------------------------------------------------------------------------*/
  74.  
  75. #define PLAYERnoErr             -1        /* no error                                */
  76. #define PLAYERerrAppl            -2        /* Unable to open MidiShare application    */
  77. #define PLAYERerrEvent          -3        /* No more MidiShare Memory             */
  78. #define PLAYERerrMemory            -4        /* No more Mac Memory                   */
  79. #define PLAYERerrSequencer        -5        /* Sequencer error                     */
  80.  
  81.  
  82.  /*--------------------------------------------------------------------------*/
  83.  // for MidiFile
  84.  /*--------------------------------------------------------------------------*/
  85.  
  86. #define noErr            0        /* no error                         */
  87. #define ErrOpen            1        /* file open error                 */
  88. #define ErrRead            2        /* file read error                */
  89. #define ErrWrite        3        /* file write error                */
  90. #define ErrVol            4        /* Volume error                     */
  91. #define ErrGetInfo         5        /* GetFInfo    error                    */
  92. #define ErrSetInfo        6        /* SetFInfo error                    */
  93. #define ErrMidiFileFormat    7    /* bad  MidiFile     format        */
  94.  
  95. /*--------------------------------------------------------------------------*/
  96.  
  97. typedef struct PlayerState  * PlayerStatePtr;
  98. typedef struct PlayerState{
  99.     long date;
  100.     long tempo;
  101.     short tsnum;
  102.     short tsdenom;
  103.     short tsclick;
  104.     short tsquarter;
  105.     short bar;
  106.     short beat;
  107.     short unit;
  108.     short state;
  109.     short syncin;
  110.     short syncout;
  111. }PlayerState;
  112.  
  113. /*--------------------------------------------------------------------------*/
  114.  
  115. typedef struct Pos  * PosPtr;
  116. typedef struct Pos{
  117.     short bar;
  118.     short beat;
  119.     short unit;
  120. }Pos;
  121.  
  122. /*--------------------------------------------------------------------------*/
  123.  
  124. typedef struct MidiFileInfos  * MidiFileInfosPtr;
  125. typedef struct MidiFileInfos
  126. {
  127.     long format;            /* file format                                */
  128.     long timedef;            /* time representation                        */
  129.     long clicks;            /* ticks per quarter/frame                    */
  130.     long tracks;            /* tracks number                             */
  131.  
  132. }MidiFileInfos;
  133.  
  134. /*--------------------------------------------------------------------------*/
  135.  
  136.  
  137. #ifdef __cplusplus
  138. extern "C" {
  139. #endif
  140.  
  141.  
  142. short  OpenPlayer (MidiName name ) ;
  143. void   ClosePlayer (short refnum);
  144.  
  145. // Transport control
  146.  
  147. void  StartPlayer (short refnum);
  148. void  ContPlayer     (short refnum);
  149. void  StopPlayer     (short refnum);
  150. void  PausePlayer (short refnum) ;
  151.  
  152. // Record management
  153.  
  154. void  SetRecordModePlayer (short refnum, short state) ;
  155. void  RecordPlayer (short refnum, short tracknum);
  156. void  SetRecordFilterPlayer(short refnum, FilterPtr filter);
  157.  
  158.  
  159. // Position management
  160.  
  161. void  SetPosBBUPlayer (short refnum, PosPtr pos);
  162. void  SetPosMsPlayer (short refnum, long date_ms);
  163.  
  164. // Loop management
  165.  
  166. void   SetLoopPlayer (short refnum, short state);
  167. long   SetLoopStartBBUPlayer (short refnum,  PosPtr pos);
  168. long   SetLoopEndBBUPlayer (short refnum,  PosPtr pos);
  169. long   SetLoopStartMsPlayer(short refnum,   long date_ms);
  170. long   SetLoopEndMsPlayer (short refnum,   long date_ms);
  171.  
  172.  
  173. // Synchronisation management
  174.  
  175. void   SetSynchroInPlayer (short refnum, short state);
  176. void  SetSynchroOutPlayer (short refnum,short state);
  177. void  SetSMPTEOffsetPlayer (short refnum, SmpteLocPtr smptepos) ;
  178.  
  179.  
  180. // State management
  181.  
  182. void   GetStatePlayer (short refnum, PlayerStatePtr playerstate) ;
  183. void   GetEndScorePlayer (short refnum, PlayerStatePtr playerstate);
  184.  
  185.  
  186. // Step playing 
  187.  
  188. void   ForwardStepPlayer (short refnum , short flag);
  189. void   BackwardStepPlayer (short refnum , short flag);
  190.  
  191.  
  192. // Tracks management
  193.  
  194. MidiSeqPtr   GetAllTrackPlayer (short refnum);
  195. MidiSeqPtr   GetTrackPlayer (short refnum, short tracknum);
  196.  
  197. long   SetTrackPlayer (short refnum, short tracknum, MidiSeqPtr s);
  198. long   SetAllTrackPlayer (short refnum, MidiSeqPtr s, long ticks_per_quarter);
  199.  
  200. void   SetParamPlayer (short refnum, short tracknum, short param , short value);
  201. short  GetParamPlayer (short refnum, short tracknum, short  param);
  202.  
  203. // Midifile management
  204.  
  205. int   MidiFileSave( char * name, MidiSeqPtr seq, MidiFileInfosPtr infos);
  206. int   MidiFileLoad( char * name, MidiSeqPtr seq, MidiFileInfosPtr infos);
  207.  
  208. #ifdef __cplusplus
  209. }
  210. #endif
  211.  
  212.  
  213.  
  214.